﻿#include "csearchlineedit.h"


#include "csearchlineedit.h"
#include <string>
#include <QHBoxLayout>
#include <QLabel>

using namespace std;

CSearchLineEdit::CSearchLineEdit(QWidget *parent):QLineEdit(parent)
{
    //防止父类窗口影响子类样式
    this->setAttribute(Qt::WA_StyledBackground);

    string qss = R"(
            QLineEdit{
                background-color:#C4DEC4;     /* 背景颜色 */
                border: 1px solid #33373E;      /* 边框宽度为1px，颜色为#A0A0A0 */
                border-radius: 20px;         /* 边框圆角 */
                padding-left: 10px;           /* 文本距离左边界有5px */
                color: #767676;     /* 文本颜色 */
                selection-background-color: #A0A0A0;     /* 选中文本的背景颜色 */
                selection-color: #F2F2F2;    /* 选中文本的颜色 */
                font-family: \"Microsoft YaHei\";    /* 文本字体族 */
                font-size:18px;    /* 文本字体大小 */
            }
        )";

    //设置样式
    this->setStyleSheet(QString::fromStdString(qss));
    //这个是设置未输入时的提示内容
    this->setPlaceholderText(u8"请输入搜索内容");

    //固定高度和最小宽度
    this->setFixedHeight(40);
    this->setMinimumWidth(400);

    m_pBtn = new CSearchButton(this);

    //创建水平布局
    QHBoxLayout* pHlay = new QHBoxLayout(this);
    pHlay->addStretch();//添加弹簧把按钮放最右边
    pHlay->addWidget(m_pBtn);
    pHlay->setContentsMargins(0,0,0,0);//这个很熟悉了，默认为11，所以都要设置

    //这是设置文字的margin（左上右下），这里右边设置为130+5，因为要把按钮位置空出来，所以是
    this->setTextMargins(10, 0, 130 + 5,0);
    // this->setFocusPolicy(Qt::ClickFocus);
    this->m_pBtn->setFocusPolicy(Qt::ClickFocus);//设置按钮不响应Tab按键,这样在QLineEdit中按Tab键才会响应
    //连接,点击按钮发送信号
    connect(m_pBtn, &CSearchButton::clicked, [=]{
        this->setFocus();
        emit sig_Search(this->text());
    });

    setAttribute(Qt::WA_InputMethodEnabled, false);//设置输入框无法输入中文
}

void CSearchLineEdit::handleSearch2(const QString &text)
{
    qDebug()<<"handleSearch2="<<text;
}

/**
 * QLineEdit控件捕获键盘事件,按空格时发送spacePressed信号并禁止输入空格
 * @brief CSearchLineEdit::keyPressEvent
 * @param event
 */
void CSearchLineEdit::keyPressEvent(QKeyEvent *event)
{
    if (event->key() == Qt::Key_Space)
    {
        emit spacePressed();
        qDebug()<<"CSearchLineEdit::keyPressEvent-禁止输入空格="<<event->key();
        event->ignore();
    }
    else
    {
        QLineEdit::keyPressEvent(event);
    }
    // event->accept(); //事件被处理,不会再传播到父窗体,加了这一句整行在widget中的keyPressEvent无法捕捉Key_Space按键
}



